build: Define build option for hardware-assisted coherency
authorJeenu Viswambharan <[email protected]>
Wed, 4 Jan 2017 13:51:42 +0000 (13:51 +0000)
committerJeenu Viswambharan <[email protected]>
Thu, 2 Mar 2017 11:00:20 +0000 (11:00 +0000)
The boolean build option HW_ASSISTED_COHERENCY is introduced to enable
various optimizations in ARM Trusted Software, when built for such
systems. It's set to 0 by default.

Change-Id: I638390da6e1718fe024dcf5b402e07084f1eb014
Signed-off-by: Jeenu Viswambharan <[email protected]>
Makefile
docs/user-guide.md
make_helpers/defaults.mk

index 932fb3b5418033ab273bdbb124be34df945b5e81..e00159a30ed993a75e0a1469f2806731ae9ff416 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -385,6 +385,7 @@ $(eval $(call assert_boolean,ENABLE_PSCI_STAT))
 $(eval $(call assert_boolean,ENABLE_RUNTIME_INSTRUMENTATION))
 $(eval $(call assert_boolean,ERROR_DEPRECATED))
 $(eval $(call assert_boolean,GENERATE_COT))
+$(eval $(call assert_boolean,HW_ASSISTED_COHERENCY))
 $(eval $(call assert_boolean,LOAD_IMAGE_V2))
 $(eval $(call assert_boolean,NS_TIMER_SWITCH))
 $(eval $(call assert_boolean,PL011_GENERIC_UART))
@@ -419,6 +420,7 @@ $(eval $(call add_define,ENABLE_PMF))
 $(eval $(call add_define,ENABLE_PSCI_STAT))
 $(eval $(call add_define,ENABLE_RUNTIME_INSTRUMENTATION))
 $(eval $(call add_define,ERROR_DEPRECATED))
+$(eval $(call add_define,HW_ASSISTED_COHERENCY))
 $(eval $(call add_define,LOAD_IMAGE_V2))
 $(eval $(call add_define,LOG_LEVEL))
 $(eval $(call add_define,NS_TIMER_SWITCH))
index 091aeba04f60f8f14a7fe7faf9f099605d8bdb2b..4ed0e20170c4ab0fc50ba833c7151a07986c4176 100644 (file)
@@ -328,6 +328,15 @@ performed.
 *   `HANDLE_EA_EL3_FIRST`: When defined External Aborts and SError Interrupts
     will be always trapped in EL3 i.e. in BL31 at runtime.
 
+*   `HW_ASSISTED_COHERENCY`: On most ARM systems to-date, platform-specific
+    software operations are required for CPUs to enter and exit coherency.
+    However, there exists newer systems where CPUs' entry to and exit from
+    coherency is managed in hardware. Such systems require software to only
+    initiate the operations, and the rest is managed in hardware, minimizing
+    active software management. In such systems, this boolean option enables ARM
+    Trusted Firmware to carry out build and run-time optimizations during boot
+    and power management operations. This option defaults to 0.
+
 *   `LOAD_IMAGE_V2`: Boolean option to enable support for new version (v2) of
     image loading, which provides more flexibility and scalability around what
     images are loaded and executed during boot. Default is 0.
index b47ea46e3d6c9d6fc9c1c365771fc085858cd43f..de506be5bd060e1cdc4ccc495c47b0f1b68d1829 100644 (file)
@@ -105,6 +105,10 @@ FWU_FIP_NAME                       := fwu_fip.bin
 # For Chain of Trust
 GENERATE_COT                   := 0
 
+# Whether system coherency is managed in hardware, without explicit software
+# operations.
+HW_ASSISTED_COHERENCY          := 0
+
 # Flag to enable new version of image loading
 LOAD_IMAGE_V2                  := 0